Asynchronous digital message systems require an indicator of the start of a message. The usual indicator is a specific digital bit sequence positioned at the start of a message, but this indicator is not always reliable, particularly if the same word used for the indicator may appear somewhere else in the body of the message. If the bit sequence used as the start-of-message-indicator appears in the body of the message, then the receiving processor may assume a new message has been started before the current message has actually ended.
Various alternative solutions involve either escape sequences to mark the start of a sequence in a message or the use of bit-stuffing to replace the forbidden bit sequence with a permissible one. Both of these approaches, however, involve significant processing on receipt of the message, and have the undesirable effect of rendering the total message length un-predictable, which only further complicates the design of the receiving elements. Another typical method to identify the start of a message is to include additional words or codes in the message payload. This, however, also lengthens the message with single-purpose data, spending bits for no use beyond message identification. Moreover, if the receiving circuit is a field programmable gate array (FPGA) or hardware-based design, this complication might significantly alter the chip design, its power consumption, and its operating speed.
Other circumstances in which computers communicate over asynchronous transmission channels all require some scheme to deal with synchronization, typically reserving a symbol for denoting message start that is prohibited from use in the message.
Still other solutions for synchronizing messages use the selection of a pattern of symbols to indicate the start of a message and accept the risk that the indicator may occur in the data (which can lead to incorrect synchronization). If a single byte is used, the chance of error is high unless the data has some characteristic that allows a unique byte to be selected (which is rarely the case in a highly efficient design). If multiple bytes are used, each additional byte reduces the chance of error but at a cost of efficiency. Even when many bytes are used, there is a finite chance of accidentally synchronizing on part of a data packet.
A start-of-message indicator that ensures synchronization of the systems while maintaining rigid message structure and does not add to or vary the message length would be highly desirable. In addition, a start-of-message indicator that also identifies different types of messages would be an added advantage.